//Plant.hpp

#ifndef _PLANT_HPP_
#define _PLANT_HPP_

#include "Organism.hpp"

class Plant : public Organism {

private :
  
public :

  /**
   * Copies a plant.
   */
  Plant(const Plant& plant);

  /**
   * Creates a plant with the given name, reproduction rate, and
   * maximum age (see Organism class), as well as a maximum total
   * number of plants this one can coexist with.
   */
  Plant(const std::string& name, double rep, int maxage, int maxnum);

  /**
   * Maximum number of plants this one can coexist with.
   */
  int maxNum;

  /**
   * Plants can also die if there are too many other plants
   * around. This method checks 
   */
  virtual void specialAdvance(Forest& forest);

  /**
   * Creates a copy of this Plant and returns it as a pointer to an
   * Organism.
   */
  Organism* clone() const { return new Plant(*this); }

};

#endif
